import 'package:flutter/material.dart';
import 'package:get/get.dart';

typedef WidgetCallback<T extends Widget> = T Function();

extension InstPlus on GetInterface {

  /// 允许空值
  S? tryFind<S>({String? tag}) => isRegistered<S>() ? find<S>(tag: tag) : null;

  /// 如果不存在使用默认的 apply 创建
  S findOrDefault<S>({String? tag, required S Function() builder }) => tryFind<S>(tag: tag) ?? builder();

  /// 如果不存在使用默认的 apply 创建， 并注入
  S findOrInject<S>({String? tag, required S Function() builder }) => tryFind<S>(tag: tag) ?? Get.put(builder());

}
